package com.ruoyi.finance.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 固定资产对象 fixed_asset
 * 
 * @author 李伟
 * @date 2025-03-06
 */
public class FixedAsset extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，自增 */
    private Long id;

    /** 资产类别 */
    @Excel(name = "资产类别")
    private Long assetCategory;

    /** 资产编号 */
    @Excel(name = "资产编号")
    private String assetCode;

    /** 资产名称 */
    @Excel(name = "资产名称")
    private String assetName;

    /** 使用部门 */
    @Excel(name = "使用部门")
    private Long useDepartment;

    /** 规格型号 */
    @Excel(name = "规格型号")
    private String specificationModel;

    /** 录入期间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "录入期间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date entryPeriod;

    /** 开始使用日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始使用日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startUseDate;

    /** 增加方式 */
    @Excel(name = "增加方式")
    private Long increaseMethod;

    /** 供应商 */
    @Excel(name = "供应商")
    private Long supplier;

    /** 使用人 */
    @Excel(name = "使用人")
    private String userName;

    /** 存放位置 */
    @Excel(name = "存放位置")
    private String storageLocation;

    /** 折旧方法 */
    @Excel(name = "折旧方法")
    private Long depreciationMethod;

    /** 录入当期是否折旧 */
    @Excel(name = "录入当期是否折旧")
    private Integer isDepreciationCurrent;

    /** 资产科目 */
    @Excel(name = "资产科目")
    private Long assetSubject;

    /** 累计折旧科目 */
    @Excel(name = "累计折旧科目")
    private Long accumulatedDepreciationSubject;

    /** 累计摊销科目 */
    @Excel(name = "累计摊销科目")
    private String cumulativeAmortizationAccounts;

    /** 资产处置科目 */
    @Excel(name = "资产处置科目")
    private Long assetDisposalSubject;

    /** 折旧费用科目 */
    @Excel(name = "折旧费用科目")
    private Long depreciationExpenseSubject;

    /** 摊销费用科目 */
    @Excel(name = "摊销费用科目")
    private Long amortizationExpenseAccount;

    /** 是否分摊 */
    @Excel(name = "是否分摊")
    private Integer isAllocation;

    /** 资产原值 */
    @Excel(name = "资产原值")
    private BigDecimal originalValue;

    /** 残值率 */
    @Excel(name = "残值率")
    private BigDecimal residualValueRate;

    /** 预计残值 */
    @Excel(name = "预计残值")
    private BigDecimal estimatedResidualValue;

    /** 预计使用月份 */
    @Excel(name = "预计使用月份")
    private Long expectedUseMonths;

    /** 已折旧月份 */
    @Excel(name = "已折旧月份")
    private Long depreciatedMonths;

    /** 剩余使用月份 */
    @Excel(name = "剩余使用月份")
    private Long remainingUseMonths;

    /** 累计折旧 */
    @Excel(name = "累计折旧")
    private BigDecimal accumulatedDepreciation;

    /** 本年累计折旧 */
    @Excel(name = "本年累计折旧")
    private BigDecimal currentYearDepreciation;

    /** 以前年度累计折旧 */
    @Excel(name = "以前年度累计折旧")
    private BigDecimal previousYearsDepreciation;

    /** 月摊销额 */
    @Excel(name = "月摊销额")
    private BigDecimal monthlyAmortization;

    /** 净值 */
    @Excel(name = "净值")
    private BigDecimal netValue;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 录入日期，默认当前日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "录入日期，默认当前日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date entryDate;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setAssetCategory(Long assetCategory) 
    {
        this.assetCategory = assetCategory;
    }

    public Long getAssetCategory() 
    {
        return assetCategory;
    }
    public void setAssetCode(String assetCode) 
    {
        this.assetCode = assetCode;
    }

    public String getAssetCode() 
    {
        return assetCode;
    }
    public void setAssetName(String assetName) 
    {
        this.assetName = assetName;
    }

    public String getAssetName() 
    {
        return assetName;
    }
    public void setUseDepartment(Long useDepartment) 
    {
        this.useDepartment = useDepartment;
    }

    public Long getUseDepartment() 
    {
        return useDepartment;
    }
    public void setSpecificationModel(String specificationModel) 
    {
        this.specificationModel = specificationModel;
    }

    public String getSpecificationModel() 
    {
        return specificationModel;
    }
    public void setEntryPeriod(Date entryPeriod) 
    {
        this.entryPeriod = entryPeriod;
    }

    public Date getEntryPeriod() 
    {
        return entryPeriod;
    }
    public void setStartUseDate(Date startUseDate) 
    {
        this.startUseDate = startUseDate;
    }

    public Date getStartUseDate() 
    {
        return startUseDate;
    }
    public void setIncreaseMethod(Long increaseMethod) 
    {
        this.increaseMethod = increaseMethod;
    }

    public Long getIncreaseMethod() 
    {
        return increaseMethod;
    }
    public void setSupplier(Long supplier) 
    {
        this.supplier = supplier;
    }

    public Long getSupplier() 
    {
        return supplier;
    }
    public void setUserName(String userName) 
    {
        this.userName = userName;
    }

    public String getUserName() 
    {
        return userName;
    }
    public void setStorageLocation(String storageLocation) 
    {
        this.storageLocation = storageLocation;
    }

    public String getStorageLocation() 
    {
        return storageLocation;
    }
    public void setDepreciationMethod(Long depreciationMethod) 
    {
        this.depreciationMethod = depreciationMethod;
    }

    public Long getDepreciationMethod() 
    {
        return depreciationMethod;
    }
    public void setIsDepreciationCurrent(Integer isDepreciationCurrent) 
    {
        this.isDepreciationCurrent = isDepreciationCurrent;
    }

    public Integer getIsDepreciationCurrent() 
    {
        return isDepreciationCurrent;
    }
    public void setAssetSubject(Long assetSubject) 
    {
        this.assetSubject = assetSubject;
    }

    public Long getAssetSubject() 
    {
        return assetSubject;
    }
    public void setAccumulatedDepreciationSubject(Long accumulatedDepreciationSubject) 
    {
        this.accumulatedDepreciationSubject = accumulatedDepreciationSubject;
    }

    public Long getAccumulatedDepreciationSubject() 
    {
        return accumulatedDepreciationSubject;
    }
    public void setCumulativeAmortizationAccounts(String cumulativeAmortizationAccounts) 
    {
        this.cumulativeAmortizationAccounts = cumulativeAmortizationAccounts;
    }

    public String getCumulativeAmortizationAccounts() 
    {
        return cumulativeAmortizationAccounts;
    }
    public void setAssetDisposalSubject(Long assetDisposalSubject) 
    {
        this.assetDisposalSubject = assetDisposalSubject;
    }

    public Long getAssetDisposalSubject() 
    {
        return assetDisposalSubject;
    }
    public void setDepreciationExpenseSubject(Long depreciationExpenseSubject) 
    {
        this.depreciationExpenseSubject = depreciationExpenseSubject;
    }

    public Long getDepreciationExpenseSubject() 
    {
        return depreciationExpenseSubject;
    }
    public void setAmortizationExpenseAccount(Long amortizationExpenseAccount) 
    {
        this.amortizationExpenseAccount = amortizationExpenseAccount;
    }

    public Long getAmortizationExpenseAccount() 
    {
        return amortizationExpenseAccount;
    }
    public void setIsAllocation(Integer isAllocation) 
    {
        this.isAllocation = isAllocation;
    }

    public Integer getIsAllocation() 
    {
        return isAllocation;
    }
    public void setOriginalValue(BigDecimal originalValue) 
    {
        this.originalValue = originalValue;
    }

    public BigDecimal getOriginalValue() 
    {
        return originalValue;
    }
    public void setResidualValueRate(BigDecimal residualValueRate) 
    {
        this.residualValueRate = residualValueRate;
    }

    public BigDecimal getResidualValueRate() 
    {
        return residualValueRate;
    }
    public void setEstimatedResidualValue(BigDecimal estimatedResidualValue) 
    {
        this.estimatedResidualValue = estimatedResidualValue;
    }

    public BigDecimal getEstimatedResidualValue() 
    {
        return estimatedResidualValue;
    }
    public void setExpectedUseMonths(Long expectedUseMonths) 
    {
        this.expectedUseMonths = expectedUseMonths;
    }

    public Long getExpectedUseMonths() 
    {
        return expectedUseMonths;
    }
    public void setDepreciatedMonths(Long depreciatedMonths) 
    {
        this.depreciatedMonths = depreciatedMonths;
    }

    public Long getDepreciatedMonths() 
    {
        return depreciatedMonths;
    }
    public void setRemainingUseMonths(Long remainingUseMonths) 
    {
        this.remainingUseMonths = remainingUseMonths;
    }

    public Long getRemainingUseMonths() 
    {
        return remainingUseMonths;
    }
    public void setAccumulatedDepreciation(BigDecimal accumulatedDepreciation) 
    {
        this.accumulatedDepreciation = accumulatedDepreciation;
    }

    public BigDecimal getAccumulatedDepreciation() 
    {
        return accumulatedDepreciation;
    }
    public void setCurrentYearDepreciation(BigDecimal currentYearDepreciation) 
    {
        this.currentYearDepreciation = currentYearDepreciation;
    }

    public BigDecimal getCurrentYearDepreciation() 
    {
        return currentYearDepreciation;
    }
    public void setPreviousYearsDepreciation(BigDecimal previousYearsDepreciation) 
    {
        this.previousYearsDepreciation = previousYearsDepreciation;
    }

    public BigDecimal getPreviousYearsDepreciation() 
    {
        return previousYearsDepreciation;
    }
    public void setMonthlyAmortization(BigDecimal monthlyAmortization) 
    {
        this.monthlyAmortization = monthlyAmortization;
    }

    public BigDecimal getMonthlyAmortization() 
    {
        return monthlyAmortization;
    }
    public void setNetValue(BigDecimal netValue) 
    {
        this.netValue = netValue;
    }

    public BigDecimal getNetValue() 
    {
        return netValue;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }
    public void setEntryDate(Date entryDate) 
    {
        this.entryDate = entryDate;
    }

    public Date getEntryDate() 
    {
        return entryDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("assetCategory", getAssetCategory())
            .append("assetCode", getAssetCode())
            .append("assetName", getAssetName())
            .append("useDepartment", getUseDepartment())
            .append("specificationModel", getSpecificationModel())
            .append("entryPeriod", getEntryPeriod())
            .append("startUseDate", getStartUseDate())
            .append("increaseMethod", getIncreaseMethod())
            .append("supplier", getSupplier())
            .append("userName", getUserName())
            .append("storageLocation", getStorageLocation())
            .append("depreciationMethod", getDepreciationMethod())
            .append("isDepreciationCurrent", getIsDepreciationCurrent())
            .append("assetSubject", getAssetSubject())
            .append("accumulatedDepreciationSubject", getAccumulatedDepreciationSubject())
            .append("cumulativeAmortizationAccounts", getCumulativeAmortizationAccounts())
            .append("assetDisposalSubject", getAssetDisposalSubject())
            .append("depreciationExpenseSubject", getDepreciationExpenseSubject())
            .append("amortizationExpenseAccount", getAmortizationExpenseAccount())
            .append("isAllocation", getIsAllocation())
            .append("originalValue", getOriginalValue())
            .append("residualValueRate", getResidualValueRate())
            .append("estimatedResidualValue", getEstimatedResidualValue())
            .append("expectedUseMonths", getExpectedUseMonths())
            .append("depreciatedMonths", getDepreciatedMonths())
            .append("remainingUseMonths", getRemainingUseMonths())
            .append("accumulatedDepreciation", getAccumulatedDepreciation())
            .append("currentYearDepreciation", getCurrentYearDepreciation())
            .append("previousYearsDepreciation", getPreviousYearsDepreciation())
            .append("monthlyAmortization", getMonthlyAmortization())
            .append("netValue", getNetValue())
            .append("remarks", getRemarks())
            .append("entryDate", getEntryDate())
            .toString();
    }
}
